package com.example.swim.Service;


import com.example.swim.Dao.AcDao;
import com.example.swim.Pojo.Activity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author LiYa
 * @create 2022-07-14 7:43
 */
@Transactional
@Service
public class AcService {
    @Autowired
    private AcDao acDao;
    /*
    * @Cacheable(value=”allAC”)，这个注释的意思是，当调用这个方法的时候，会从一个名叫 allAC 的缓存中查询
    * ，如果没有，则执行实际的方法（即查询数据库），并将执行的结果存入缓存中，否则返回缓存中的对象。
    * */
    @Cacheable(value = "allAC" ,key = "'findAC'")
    public List<Activity> findAll()
    {
        return acDao.searchAll();
    }
    @Cacheable(value = "allAC",key="#p0")
    public Activity findAc(Integer id)
    {
        return acDao.searchByName(id);
    }
    //添加redis的缓存 一般用于新增,这里的缓存中的 key 就是参数*/
    @CachePut(value = "allAC",key="'findAC'")
    public  List<Activity> insert(Activity activity)
    {
        acDao.insertActivity(activity);
        return acDao.searchAll();
    }
    //清空Redis的缓存，一般用户更新和删除方法上面
    @CacheEvict(value = "allAC",allEntries = true)
    public int del(Integer id)
    {
        return acDao.delActivity(id);
    }
    //更新
    @CacheEvict(value = "allAC",key = "'findAC'")
    public List<Activity> update(Activity activity)
    {
        acDao.updateActivity(activity);
        return acDao.searchAll();
    }

    @CacheEvict(value = "allAC",key = "'findAC'")
    public List<Activity> addNum(Integer id)
    {
        acDao.addNum(id);
        return acDao.searchAll();
    }

}
